1. Field of the Invention
The invention relates generally to the use of computers to control devices and more specifically to the organization of systems in such computers for controlling devices to provide services for entities. One class of such devices is switches in telephone networks, and the invention may be employed to provide services such as locator services, 800 number services, or caller announcement to customers of a telephone network.
2. Description of the Prior Art
The advent of stored-program controlled networks has provided telephone companies with the means for providing their customers with many services other than simply connecting a caller to the number he dialed. Examples of such services are 800 number services, locator services, caller ID services, and so on. Such services have become enormously popular and are an important source of revenue for the companies which provide them and for the manufacturers of the hardware and software used in the stored program controlled networks. Further, given the programmability of the network, the variety of such services is limited only by the imaginations of those who create them.
The popularity of these services and their potential variety has made it imperative that the telephone companies and their hardware and software suppliers find easier ways to create and modify services. At present, programmable devices in the stored-program controlled networks execute what is called generic code for the device. Services offered by the device are part of the genetic code. Consequently, adding or modifying a service requires modification of the generic code. Such modifications are difficult and time-consuming, first because of the complexity of the genetic code and second because of the need for careful and exhaustive testing to detect defects in the genetic code which might cause failure of the device controlled by the genetic code or even catastrophic failure of the network.
FIG. 26 shows two prior-art techniques for making the creation and modification of services easier. The first technique is a partitioning of the generic code which makes addition and modification of services easier; the second is employing a data structure called a decision graph to modify a service without changing the code for the service. The figure shows both techniques as they might be embodied in devices of a stored program controlled network 2601 of the type in which the devices of the network communicate by means of the common channel interoffice signalling facilities (CCIS), a signalling channel which is separate from the telephone lines controlled by the network and by means of which the program controlled devices in the network can send and receive control messages.
The devices shown in FIG. 26 are a switch 2603 and a network control point 2605. Switch 2603 includes switching hardware 2609, which has incoming lines 2611 and outgoing lines 2613 and receives calls on incoming lines 2611 and outputs them on outgoing lines 2613. Network control point 2605 includes a network control point data base 2607, which contains information employed in some services. For example, with 800 number services, data base 2607 specifies for each 800 number the actual numbers of the telephones to which calls made to the 800 number are to be routed. Included in the information for some services are decision graphs 221.
Switch hardware 2609 and network control point data base 2607 are controlled by control computers. Switch 2609 is controlled by switch control computer (SCC) 2607. Operation of control computer 2607 is controlled by switch control process 2615, which executes service code 2617. Service code 2617 defines a number of services and consists of service specific code (SSC) 2619 for each service and service library code (SLC) 2621, which is shared by all services. As shown by the arrows leading to and from service control process 2615, while executing service code 2617, service control process 2615 provides control signals to and responds to control signals from switch hardware 2609, provides CCIS messages to and receives CCIS messages from message interface 2625, which is connected to the control channel, and writes data to and reads data from service data 2623.
Network control point data base 2607 is controlled by network control point computer 2609. Controlling computer 2609 is network controlpoint control process 2611, which executes network control point code 2613. As indicated by the arrows, as it does so, it executes queries of network control point data base 2607, reads and writes network control point data 2616, and provides CCIS messages to message interface 2629 and receives them from message interface 2629.
The 800 number service described above can serve as an example of how the components of stored program controlled network 2601 cooperate to provide a service. Provision of the service begins when switch hardware 2609 receives the 800 number. In response to the 800 number, switch control process 2615 uses a table in service data 2623 to determine which service specific code 2619 in service code 2617 corresponds to the 800 number specified by the caller and begins executing that service specific code. The service specific code invokes routines in service library code 2621 which, when executed by service control process 2615 cause message interface 2625 to send a message via CCIS 2627 to NCP 2605 which contains the 800 number. On receipt of the message, NCP control computer 2609 queries data base 2607 to determine the telephone number to which the call to the 800 number should be directed. Data base 2607 determines the telephone number, perhaps by using a decision graph 221 corresponding to the 800 number, and returns the telephone number to control computer 2609, which in turn sends it via CCIS 2627 to service control computer 2607. On receipt of the message containing the number, service control process 2615 causes switch hardware 2609 to route the call to the number.
As will be described more extensively in the following Detailed Description, decision graph 221 is a tree data structure which describes a set of alternative actions and rules for which of the alternative actions to take. In the 800 number context, the alternative actions are simply alternative destinations for the call to the 800 number; which alterative is taken may depend on the caller's location or the time at which he makes the call. As is apparent from the foregoing, the use of decision graphs to define alternative destinations of calls to 800 numbers permits modification of the 800 number service for a given 800 number without modification of service specific code 2619.
While the partition of service code 2617 and the use of decision graphs in network control point 2605 make modification of services easier and faster, there is still room for improvement. In particular, because all services executed by service control processor 2615 use a single copy of service code 2617, a change in that copy can potentially affect every service executed by service control process 2615; in particular, changes to service library code 2621 must be made with the same care as changes to generic code. Further, a defect in service specific code 2619 can cause service control process 2615 to overwrite data in service data 2623 belonging to services other than the one corresponding to service specific code 2619, and can thereby cause failure of these other services. Finally, the location of decision graphs 221 in network control point data base 2607 means that decision graph 221 is remote from its corresponding service specific code 2619. Consequently, use of a decision graph is a time-consuming operation, close cooperation between service specific code 2619 and a decision graph 221 is not possible, and changes in a service which involve both service-specific code 2619 and decision graph 221 require changes at two separate locations, with the consequent difficulties in coordination and testing.
It is thus an object of the invention to overcome the above difficulties of the prior art and provide improved apparatus and methods for the computer control of devices generally and telephone switching networks in particular.